Android 15 正式发布至 AOSP
作者 / Matthew McCullough – VP of Product Management, Android Developer
🔗 Android 开源项目
https://source.android.google.cn/
🔗 Spotlight Weeks
https://android-developers.googleblog.com/2024/09/android-15-spotlight-week.html
🔗 无边框
https://medium.com/androiddevelopers/insets-handling-tips-for-android-15s-edge-to-edge-enforcement-872774e8839b
改善您的开发者体验
ApplicationStartInfo API 有助于您深入了解应用的启动情况,包括启动原因、启动阶段耗时、启动温度等。 Android Jetpack 中的 Profiling 类简化了在 Android 15 中使用新的 ProfilingManager API 的方式,允许您的应用请求堆分析报告、堆转储、堆栈采样或系统跟踪,以一种新的方式来收集用户设备上应用运行情况的遥测数据。 StorageStats.getAppBytesByDataType([type]) API 为您提供有关应用如何使用存储的新见解,包括 apk 文件拆分、提前编译 (AOT) 和加速相关代码、dex 元数据、库和引导配置文件。 PdfRenderer API 现在包括了集成高级功能的能力,例如渲染受密码保护的文件、注释、表单编辑、搜索以及复制选择。支持线性 PDF 优化功能,以加快本地 PDF 的查看速度并减少资源使用。Jetpack PDF 库不仅可以使用这些 API 来简化向应用添加 PDF 查看功能的操作,还计划支持较旧的 Android 版本。 新增的 OpenJDK API 可支持额外的 Math/StrictMath 方法、包括 Sequenced Collection/Map/Set 在内的许多 util 更新、Deflater 中的 ByteBuffer 支持以及安全密钥更新。这些 API 更新通过 Google Play 系统更新推送到运行 Android 12+ 至 Android 15 的超十亿台设备上,以便您可以最大范围地使用最新的编程功能。 新增的 SQLite API 包括对只读延迟事务的支持、在不发出额外查询的情况下检索已更改行数或最后插入的行 ID 的新方法,以及对原始 SQLite 语句的直接支持。 Android 15 增加了新的 Canvas 绘图功能,包括有助于在 3D 中处理 Canvas 的 Matrix44 和通过与当前着色器或当前着色器的差异相交来生成复杂形状的 clipShader/clipOutShader。
🔗 Android Studio
https://developer.android.google.cn/studio
🔗 Jetpack Compose
https://developer.android.google.cn/jetpack/compose
🔗 Android Jetpack
https://developer.android.google.cn/jetpack
🔗 ApplicationStartInfo
https://developer.android.google.cn/reference/android/app/ApplicationStartInfo
🔗 Profiling
https://developer.android.google.cn/reference/androidx/core/os/Profiling
🔗 ProfilingManager
https://developer.android.google.cn/reference/com/google/android/things/bluetooth/BluetoothProfileManager
🔗 堆分析报告
https://developer.android.google.cn/reference/androidx/core/os/HeapProfileRequestBuilder
🔗 堆转储
https://developer.android.google.cn/reference/androidx/core/os/JavaHeapDumpRequestBuilder
🔗 堆栈采样
https://developer.android.google.cn/reference/androidx/core/os/StackSamplingRequestBuilder
🔗 系统跟踪
https://developer.android.google.cn/reference/androidx/core/os/SystemTraceRequestBuilder
🔗 StorageStats.getAppBytesByDataType([type])
https://developer.android.google.cn/reference/android/app/usage/StorageStats#getAppBytesByDataType%28int%29
🔗 PdfRenderer API
https://developer.android.google.cn/reference/android/graphics/pdf/PdfRenderer
🔗 受密码保护的文件
https://developer.android.google.cn/reference/android/graphics/pdf/LoadParams
🔗 表单编辑
https://developer.android.google.cn/reference/android/graphics/pdf/models/FormEditRecord
🔗 搜索
https://developer.android.google.cn/reference/android/graphics/pdf/PdfRenderer.Page#searchText%28java.lang.String%29
🔗 选择
https://developer.android.google.cn/reference/android/graphics/pdf/PdfRenderer.Page#selectContent%28android.graphics.pdf.models.selection.SelectionBoundary,%20android.graphics.pdf.models.selection.SelectionBoundary,%20boolean%29
🔗 Jetpack PDF 库
https://developer.android.google.cn/jetpack/androidx/releases/pdf
🔗 Math
https://developer.android.google.cn/sdk/api_diff/v-dp2-incr/changes/java.lang.Math
🔗 StrictMath
https://developer.android.google.cn/sdk/api_diff/v-dp2-incr/changes/java.lang.StrictMath
🔗 SequencedCollection
https://developer.android.google.cn/reference/java/util/SequencedCollection
🔗 SequencedMap
https://developer.android.google.cn/reference/java/util/SequencedMap
🔗 SequencedSet
https://developer.android.google.cn/reference/java/util/SequencedSet
🔗 util 更新
https://developer.android.google.cn/sdk/api_diff/v-dp2-incr/changes/pkg_java.util
🔗 Deflater 中的 ByteBuffer 支持
https://developer.android.google.cn/sdk/api_diff/v-dp2-incr/changes/java.util.zip.Deflater
🔗 安全密钥更新
https://developer.android.google.cn/sdk/api_diff/v-dp2-incr/changes/pkg_java.security.spec
🔗 只读延迟事务
https://developer.android.google.cn/reference/kotlin/android/database/sqlite/SQLiteDatabase?hl=en#begintransactionreadonly
🔗 已更改行
https://developer.android.google.cn/reference/kotlin/android/database/sqlite/SQLiteDatabase?hl=en#getlastchangedrowcount
🔗 最后插入的行 ID
https://developer.android.google.cn/reference/kotlin/android/database/sqlite/SQLiteDatabase?hl=en#getlastinsertrowid
🔗 原始 SQLite 语句
https://developer.android.google.cn/reference/kotlin/android/database/sqlite/SQLiteDatabase?hl=en#createrawstatement
🔗 Matrix44
https://developer.android.google.cn/reference/android/graphics/Matrix44
🔗 clipShader
https://developer.android.google.cn/reference/android/graphics/Canvas#clipShader%28android.graphics.Shader%29
🔗 clipOutShader
https://developer.android.google.cn/reference/android/graphics/Canvas#clipOutShader%28android.graphics.Shader%29
↕️ 上下滑动查看更多注释链接
改进排版效果和提高国际化水平
Android 可帮助您打造出精美的应用,使其能在全球多样化的 Android 生态系统中流畅运行。
现在,您可以使用 Android 15 中的可变字体创建 FontFamily 实例,而不必使用 buildVariableFamily API 指定 wght 和 ital 轴;文本渲染器将自动调整 wght 和 ital 轴的值,以便显示文本与兼容的字体相匹配。 Android 15 中,适用于中文、日文和韩文 (CJK) 的字体文件 NotoSansCJK 成为可变字体,为创意排版开辟了新的可能性。 Android 15 默认捆绑一个旧日文平假名 (即 "Hentaigana") 字体文件,这既有助于增添独特的设计风格,同时还让开发者可以更准确地理解和传达古代日本文献。 Android 15 中的 JUSTIFICATION_MODE_INTER_CHARACTER 针对中文和日文等使用空格进行分段的语言进行对齐优化。
🔗 FontFamily
https://developer.android.google.cn/reference/android/graphics/fonts/FontFamily
🔗 buildVariableFamily
https://developer.android.google.cn/reference/android/graphics/fonts/FontFamily.Builder#buildVariableFamily%28%29
🔗 NotoSansCJK
https://developer.android.google.cn/about/versions/15/features#cjk-variable-font
🔗 捆绑一个旧日文平假名 (即 "Hentaigana") 字体文件
https://developer.android.google.cn/about/versions/15/features#hentaigana-font
🔗 JUSTIFICATION_MODE_INTER_CHARACTER
https://developer.android.google.cn/reference/android/text/Layout#JUSTIFICATION_MODE_INTER_CHARACTER
↕️ 上下滑动查看更多注释链接
相机和媒体改进
每次 Android 发布都会帮助您为用户带来卓越的媒体和相机体验。
对于同时包含 HDR 和 SDR 内容的屏幕,Android 15 允许您使用 setDesiredHdrHeadroom 控制 HDR 余量,以防出现 SDR 内容呈现褪色效果。 Android 15 支持智能调整包含响度元数据的 AAC 音频的音频响度和动态范围压缩级别,以便音频级别可以适应用户设备和周围环境。要启用此功能,请使用来自关联 AudioTrack 中的音频会话 ID 实例化 LoudnessCodecController。 Android 15 中的弱光增强功能可在弱光条件下调整预览流的曝光度,从而实现图像预览增强、在弱光下扫描二维码等功能。 Android 15 中的高级闪光灯强度调整,可在拍摄图像时精确控制 SINGLE 和 TORCH 模式下的闪光强度。 Android 15 扩展了对虚拟 MIDI 应用的 UMP 支持,使作曲应用能够将合成器应用作为虚拟 MIDI 2.0 设备进行控制,就像控制 USB MIDI 2.0 设备一样。
🔗 setDesiredHdrHeadroom
https://developer.android.google.cn/reference/kotlin/android/view/Window?hl=en#setdesiredhdrheadroom
🔗 AudioTrack
https://developer.android.google.cn/reference/android/media/AudioTrack
🔗 LoudnessCodecController
https://developer.android.google.cn/reference/android/media/LoudnessCodecController
🔗 弱光增强
https://developer.android.google.cn/about/versions/15/features/low-light-boost
🔗 SINGLE
https://developer.android.google.cn/reference/android/hardware/camera2/CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL
🔗 TORCH
https://developer.android.google.cn/reference/android/hardware/camera2/CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL
🔗 虚拟 MIDI 2.0 设备
https://developer.android.google.cn/reference/android/media/midi/MidiUmpDeviceService
↕️ 上下滑动查看更多注释链接
改善用户体验
我们致力于在每个版本中不断改进 Android 用户体验,同时努力提高性能和电池寿命。以下是 Android 15 的一些改进,旨在提供更直观、更高性能、更便于访问的体验。
在 Android 15 上,用户不仅可以保存自己偏好的分屏应用组合以快速访问,还可以在屏幕上固定任务栏以在应用之间快速切换,从而实现更好的大屏多任务处理。确保您的应用具有自适应性比以往任何时候都更为重要。 Android 15 默认在以 SDK 35 为目标时 "无边框" 显示应用。此外,系统栏将默认为透明或半透明,内容将在其后面绘制。要确保您的应用已准备就绪,请查看 "使用边衬区处理重叠"(视图) 或 "Compose 中的窗口边衬区"。此外,许多 Material 3 可组合项可帮助您处理边衬区。 Android 15 使 TalkBack 能够支持通过 USB 和安全蓝牙使用 HID 标准的盲文显示屏,以帮助 Android 支持更广泛的盲文显示屏。 在受支持的 Android 15 设备上,NfcAdapter 允许应用请求观察模式以及注册过滤器,从而在大多数情况下在多个支持 NFC 的应用之间实现一键交易。 应用可以声明一个属性,以允许您的应用或活动在受支持的 "翻盖式" 设备的小外屏上显示。 Android 15 大大增强了 AutomaticZenRules,通过添加类型、图标、触发描述和触发 ZenDeviceEffects 的能力,允许应用进一步自定义注意力管理 (勿扰) 规则。 Android 15 现在支持以操作系统级执行应用归档和取消归档。归档操作会删除 APK 和已缓存的文件,但会保留用户数据,并通过 LauncherApps API 返回可显示的应用,并且原始安装程序可以在请求取消归档时恢复相关数据。 作为改善电池寿命和多任务性能工作的一部分,我们在 Android 15 中对前台服务做出了一些更改,包括新增数据同步超时、新的媒体处理前台服务类型,以及在应用拥有 SYSTEM_ALERT_WINDOWS 权限的情况下,限制从 BOOT_COMPLETED 启动前台服务。 从 Android 15 开始,16 KB 页面大小支持将在特定设备上作为开发者选项提供。当 Android 使用这种较大的页面大小时,我们的初步测试结果显示,在额外使用约 9% 的内存时,整体性能提升了 5-10%。
🔗 更好的大屏多任务处理
https://developer.android.google.cn/about/versions/15/features#large-screen-multitasking
🔗 应用具有自适应性
https://io.google/2024/explore/d16737ba-e336-4b68-8928-24692a88e644/
🔗 无边框
https://developer.android.google.cn/about/versions/15/behavior-changes-15#window-insets
🔗 使用边衬区处理重叠
https://developer.android.google.cn/develop/ui/views/layout/edge-to-edge#handle-overlaps
🔗 Compose 中的窗口边衬区
https://developer.android.google.cn/develop/ui/compose/layouts/insets
🔗 许多 Material 3 可组合项
https://developer.android.google.cn/develop/ui/compose/layouts/insets#inset-handling
🔗 TalkBack
https://developer.android.google.cn/guide/topics/ui/accessibility/testing#talkback
🔗 NfcAdapter
https://developer.android.google.cn/reference/android/nfc/NfcAdapter
🔗 观察模式
https://developer.android.google.cn/reference/android/nfc/NfcAdapter#setObserveModeEnabled%28boolean%29
🔗 声明一个属性
https://developer.android.google.cn/reference/android/view/WindowManager#COMPAT_SMALL_COVER_SCREEN_OPT_IN
🔗 AutomaticZenRules
https://developer.android.google.cn/reference/android/app/AutomaticZenRule
🔗 ZenDeviceEffects
https://developer.android.google.cn/reference/android/service/notification/ZenDeviceEffects
🔗 LauncherApps
https://developer.android.google.cn/reference/android/content/pm/LauncherApps
🔗 取消归档
https://developer.android.google.cn/reference/android/content/pm/PackageInstaller#requestUnarchive%28java.lang.String,%20android.content.IntentSender%29
🔗 数据同步超时
https://developer.android.google.cn/about/versions/15/behavior-changes-15#datasync-timeout
🔗 新的媒体处理前台服务类型
https://developer.android.google.cn/about/versions/15/behavior-changes-15#mediaprocessing-fgs-type
🔗 在应用拥有 SYSTEM_ALERT_WINDOWS 权限的情况下
https://developer.android.google.cn/about/versions/15/behavior-changes-15#fgs-sysalert
🔗 限制从 BOOT_COMPLETED 启动前台服务
https://developer.android.google.cn/about/versions/15/behavior-changes-15#fgs-boot-completed
🔗 16 KB 页面大小支持将在特定设备上作为开发者选项提供
https://android-developers.googleblog.com/2024/08/adding-16-kb-page-size-to-android.html
🔗 整体性能提升了 5-10%
hhttps://developer.android.google.cn/guide/practices/page-sizes#benefits
↕️ 上下滑动查看更多注释链接
隐私和安全增强功能
Android 15 中的私密空间支持用户在自己的设备上创建独立的空间,用户可以为该空间设置额外的身份验证步骤,防止敏感应用遭到窥探。对于某些类型的应用 (如医疗应用、启动器应用和应用商店),可能需要采取额外步骤才能让其在用户的私密空间中正常运行。
Android 15 支持使用通行密钥进行一键登录,并支持自动填充已保存的凭证到相关输入字段。
Android 15 增加了对应用的支持,使其能够检测自身行为是否被记录。这样一来,如果您的应用正在执行敏感操作,您便可以告知用户他们的行为正在被录制。
Android 15 添加了 allowCrossUidActivitySwitchFromBelow 属性,用以阻止与堆栈上的顶部 UID 不匹配的应用启动活动,以免发生任务劫持攻击。
在 Android 15 中,PendingIntent 创建者默认会阻止后台活动启动,以帮助防止应用意外创建可能被恶意攻击者滥用的 PendingIntent。
↕️ 上下滑动查看更多注释链接
让您的应用、库、工具和游戏引擎整装待发!
更改软件包停止状态 - Android 15 更新了软件包 FLAG_STOPPED 状态的行为,在用户启动应用或间接与应用交互之前,使应用保持停止状态。 支持 16 KB 的页面大小 - 从 Android 15 开始,部分设备将支持配置为使用 16 KB 页面大小,并作为开发者选项提供。此外,Android Studio 还通过 SDK 管理器提供支持 16 KB 的模拟器系统映像。如果您的应用或库直接或通过 SDK 间接使用 NDK,您可以使用 QPR Beta 版或 Android 15 模拟器系统映像中的开发者选项来测试和修复应用,为即将采用 16 KB 页面大小的 Android 设备做好准备。 私密空间支持 - 测试安装在私密空间中的应用/库是否可以正常运行;我们为医疗应用、启动器应用和应用商店提供了指南。 移除旧版表情符号字体文件 - 某些搭载 Android 15 的设备 (如 Pixel) 将不再包含自 Android 13 以来针对兼容性提供的位图 NotoColorEmojiLegacy.ttf 文件,而是仅保留默认的矢量文件。
🔗 行为变更
https://developer.android.google.cn/about/versions/15/behavior-changes-all
🔗 更改软件包停止状态
https://developer.android.google.cn/about/versions/15/behavior-changes-all#enhanced-stop-states
🔗 支持 16 KB 的页面大小
https://developer.android.google.cn/about/versions/15/behavior-changes-all#16-kb
🔗 私密空间支持
https://developer.android.google.cn/about/versions/15/behavior-changes-all#private-space-changes
🔗 医疗应用
https://developer.android.google.cn/about/versions/15/behavior-changes-all#private-space-medical-apps
🔗 启动器应用
https://developer.android.google.cn/about/versions/15/behavior-changes-all#private-space-launcher-apps
🔗 应用商店
https://developer.android.google.cn/about/versions/15/behavior-changes-all#private-space-app-store-apps
🔗 移除旧版表情符号字体文件
https://developer.android.google.cn/about/versions/15/behavior-changes-all#png-emoji-font
↕️ 上下滑动查看更多注释链接
🔗 相关流程
https://developer.android.google.cn/about/versions/15/migration#setup_sdk
🔗 更新应用的 targetSdkVersion
https://developer.android.google.cn/distribute/best-practices/develop/target-sdk
应用兼容性
△ "开发者选项" 中的应用兼容性切换开关
🔗 在此处查看操作方法
https://developer.android.google.cn/about/versions/15/reference/compat-framework-changes
△ Android Studio Koala Feature Drop 中的 Android SDK 升级助手
🔗 Android SDK 升级助手
https://developer.android.google.cn/build/sdk-upgrade-assistant
即刻体验 Android 15
🔗 Android 15 QPR Beta 版计划
https://developer.android.google.cn/about/versions/15/get-qpr1
🔗 Android 15 Spotlight Week
https://android-developers.googleblog.com/2024/09/android-15-spotlight-week.html
🔗 无边框
https://medium.com/androiddevelopers/insets-handling-tips-for-android-15s-edge-to-edge-enforcement-872774e8839b
🔗 博客
https://android-developers.googleblog.com/
🔗 X
https://x.com/androiddev
https://www.linkedin.com/showcase/androiddev/
🔗 YouTube
http://www.youtube.com/androiddevelopers
↕️ 上下滑动查看更多注释链接
🔗 Android 15 开发者网站
https://developer.android.google.cn/about/versions/15
推荐阅读